/* * Created on Sep 2, 2011 * (c) 2011 Trumpet, Inc. * */ package com.itextpdf.text.pdf.parser; import junit.framework.Assert; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.itextpdf.testutils.TestResourceUtils; import com.itextpdf.text.pdf.PRStream; import com.itextpdf.text.pdf.PdfDictionary; import com.itextpdf.text.pdf.PdfIndirectReference; import com.itextpdf.text.pdf.PdfName; import com.itextpdf.text.pdf.PdfReader; /** * @author kevin */ public class PdfImageObjectTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } private void testFile(String filename, int page, String objectid) throws Exception{ final PdfReader pdfReader = TestResourceUtils.getResourceAsPdfReader(this, filename); try{ PdfDictionary resources = pdfReader.getPageResources(page); PdfDictionary xobjects = resources.getAsDict(PdfName.XOBJECT); PdfIndirectReference objRef = xobjects.getAsIndirectObject(new PdfName(objectid)); if (objRef == null) throw new NullPointerException("Reference " + objectid + " not found - Available keys are " + xobjects.getKeys()); PRStream stream = (PRStream)PdfReader.getPdfObject(objRef); PdfDictionary colorSpaceDic = resources != null ? resources.getAsDict(PdfName.COLORSPACE) : null; PdfImageObject img = new PdfImageObject(stream, colorSpaceDic); byte[] result = img.getImageAsBytes(); Assert.assertNotNull(result); int zeroCount = 0; for (byte b : result) { if (b == 0) zeroCount++; } Assert.assertTrue(zeroCount > 0); } finally { pdfReader.close(); } } @Test public void testMultiStageFilters() throws Exception{ testFile("multistagefilter1.pdf", 1, "Obj13"); } @Test public void testAscii85Filters() throws Exception{ testFile("ASCII85_RunLengthDecode.pdf", 1, "Im9"); } @Test public void testCcittFilters() throws Exception{ testFile("ccittfaxdecode.pdf", 1, "background0"); } @Test public void testFlateDecodeFilters() throws Exception{ testFile("flatedecode_runlengthdecode.pdf", 1, "Im9"); } @Test public void testDctDecodeFilters() throws Exception{ testFile("dctdecode.pdf", 1, "im1"); } @Test public void testjbig2Filters() throws Exception{ testFile("jbig2decode.pdf", 1, "2"); } }